본문으로 건너뛰기

이모션

이모션 소개

React를 사용하여 애플리케이션을 개발하다 보면 스타일을 관리하는 것이 중요한 부분이 됩니다. 스타일링 방법에는 여러 가지가 있지만, 그중 **이모션(Emotion)**은 매우 강력하고 유연한 CSS-in-JS 라이브러리입니다. 이모션을 사용하면 JavaScript 코드 내에서 CSS를 작성하고, 동적으로 스타일을 적용할 수 있습니다. 이 글에서는 이모션의 기본 사용법과 장점을 알아보겠습니다.

이모션 설치하기

이모션을 사용하기 위해서는 먼저 패키지를 설치해야 합니다. 다음 명령어를 통해 이모션을 설치할 수 있습니다.

npm install @emotion/react @emotion/styled

기본 사용법

이모션은 두 가지 주요 방식으로 스타일을 적용할 수 있습니다: styled componentscss.

styled components 사용

이모션의 styled 함수를 사용하면 컴포넌트를 쉽게 스타일링할 수 있습니다. 다음은 styled 함수를 사용하는 예제입니다.

/** @jsxImportSource @emotion/react */
import { css } from '@emotion/react';
import styled from '@emotion/styled';

const Button = styled.button`
padding: 8px 16px;
background-color: #3498db;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
&:hover {
background-color: #2980b9;
}
`;

function App() {
return (
<div>
<Button>Click me</Button>
</div>
);
}

export default App;

이 예제에서 Button 컴포넌트는 styled.button으로 생성되었으며, CSS 스타일이 포함되어 있습니다.

css 사용

이모션의 css 함수를 사용하면 컴포넌트의 스타일을 객체 형태로 작성할 수 있습니다. 이 방법은 조건부 스타일링이나 동적 스타일링에 유용합니다.

import { css } from '@emotion/react';

const buttonStyle = css`
padding: 8px 16px;
background-color: #3498db;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
&:hover {
background-color: #2980b9;
}
`;

function App() {
return (
<div>
<button css={buttonStyle}>Click me</button>
</div>
);
}

export default App;

여기서 buttonStylecss 함수를 사용하여 정의되었으며, JSX에서 css 속성으로 적용됩니다.

주의할 점

  1. 동적 스타일링: 이모션은 JavaScript 코드 내에서 CSS를 작성하기 때문에 동적으로 스타일을 변경하거나 조건부 스타일을 쉽게 적용할 수 있습니다. 이를 통해 사용자 입력이나 상태 변화에 따라 유연하게 스타일을 변경할 수 있습니다.
  2. CSS-in-JS의 성능: CSS-in-JS 방식은 성능에 영향을 미칠 수 있습니다. 이모션은 성능 최적화가 잘 되어 있지만, 스타일을 많이 변경하는 경우 성능 이슈를 염두에 두어야 합니다.
  3. 서버 사이드 렌더링(SSR): 이모션은 SSR을 지원하지만, 설정이 필요할 수 있습니다. 공식 문서를 참고하여 설정을 정확히 해야 합니다.

더 알아보기

  • CSS-in-JS: JavaScript 코드 내에서 CSS를 작성하는 방식. 이모션을 포함한 다양한 라이브러리들이 존재합니다.
  • Styled Components: styled 함수를 사용하여 컴포넌트를 스타일링하는 방법.
  • 동적 스타일링: 사용자 입력이나 상태 변화에 따라 스타일을 동적으로 변경하는 방법.

내용 요약

이모션은 React 애플리케이션에서 CSS-in-JS 방식을 사용하여 스타일을 적용할 수 있는 강력한 라이브러리입니다. styledcss 함수를 통해 컴포넌트를 쉽게 스타일링할 수 있으며, 동적 스타일링과 조건부 스타일링에 유용합니다. 이모션의 성능 최적화와 SSR 설정을 염두에 두어야 합니다.